package com.platform.modules.mch.service;

import com.alibaba.fastjson.JSONObject;
import com.platform.common.utils.mch.config.MchConfig;
import com.platform.modules.mall.entity.MallGoodsEntity;
import com.platform.modules.mch.dto.MchGoodsNumberLockDto;

import java.util.List;

/**
 * 第三方平台 联联对接
 */
public interface MchGoodsService {

    /**
     * 通过ID查询联联商品信息
     *
     * @param ids 商品ID列表
     * @param url 请求url
     * @param tClass  指定的返回值类型
     * @param <T> 指定的返回值类型
     * @return 第三方平台商品列表
     */
    <T> List<T> getListByIds(List<String> ids, MchConfig.Url url, Class<T> tClass);

    /**
     * 选择同步第三方商品
     *
     * @param categoryId 商品类型
     * @param ids 商品ID
     */
    void syncGoods(String categoryId, List<String> ids);

    /**
     * 分页获取第三方商品
     *
     * @param params 参数
     * @return
     */
    JSONObject list(JSONObject params);

    /**
     * 获取全部联联商品
     *
     * @return
     */
    List<MallGoodsEntity> queryGoods(int page, int limit, String locationId);

    /**
     * 批量保存
     *
     * @param goodsEntities
     * @return
     */
    boolean batchSave(List<MallGoodsEntity> goodsEntities);

    /**
     * 查询商品可锁定库存
     *
     * @param goodsId 商品ID
     */
    MchGoodsNumberLockDto getStock(String goodsId);

    /**
     * 锁定商品库存
     *
     * @param jsonObject { goodsId : 商品ID   number : 锁定数量 (负数为库存回退) }
     */
    void lockStock(JSONObject jsonObject);

}
